有的放矢,远程操控中实时音视频的优化之道
导语 | 腾讯云加社区精品内容栏目《云荐大咖》,特邀行业佼者,聚焦前沿技术的落地与理论实践,持续为您解读云时代热点技术,探秘行业发展新机。
5G远程操控场景,对实时音视频传输的时延、卡顿率和抗弱网等指标都有着非常高的要求,本文将会介绍如何结合5G网络特点,在实时音视频通信链路中进行联合优化,满足行业场景远控需求,降低画面时延。
在上一篇文章中,我们介绍了远程操控的技术要点。从这一章开始,笔者将会依次介绍远程操控三大技术的应用及优化重点内容。本文以实时音视频通信技术开始,其主要被用于解决远程操控中被操控设备或车辆周边环境画面和声音向远处控制端的实时传输,方便远程驾驶员或操控员能够清晰地了解被控设备周遭情况,从而进行针对性操控。比如车辆前进中前方和侧后方的画面,挖掘机作业过程中的抓臂画面都需要通过实时音视频技术进行远程传输。
为保证操控的实时性和流畅性,相比声音的传输,远程操控主要对画面的传输有非常高的要求,针对画面时延、卡顿率和抗弱网能力等核心指标更是如此。以低速远程驾驶场景为例,时延需要小于200ms,尽量能接近100ms,卡顿率最好低于千分之2,能够抵抗极端情况下与平均RTT时延相当的网络波动和20%-30%左右的丢包率。这些指标的要求往往明显高于此前的远程会议、直播、监控等应用场景,而对于实时音视频技术来讲,降低时延,与降低卡顿率、提高抗弱网能力往往是相互矛盾的,因此这是一个非常大的挑战。
远程操控与其他应用场景的指标对比
按图循迹,探索优化重点
下图是一个典型视频传输链路的示意,主要由采集、编码、发送、传输、接收、解码、渲染等主要模块构成。
采集:从相机中采集出原始的图像帧数据
编码:对采集的原始图像帧进行编码
发送:对编码后的视频帧进行打包发送
传输:将打包后的数据从网络中传输
接收:接收打包数据并恢复出视频帧
解码:对视频帧进行解码恢复出原始图像帧数据
渲染:对原始图像帧数据进行渲染输出到屏幕
实时音视频通信中,主要承担抵抗网络波动、降低卡顿率责任的是接收模块中的jitterbuffer,同时它也是时延的主要贡献者之一。不同项目中jitterbuffer的实现略有区别,但基本上都会有乱序排列、帧检测、帧缓存等功能。jitterbuffer主要负责正确接收视频帧并适当缓存,在确认达到可解码条件后,根据预估的帧间延迟(两帧接收时间差-两帧发送时间差)平滑后,送入到后续的解码和渲染模块。这样即使网络有一定波动,由于jitterbuffer的平滑,相邻的视频帧仍可以接近期望时间间隔渲染,从而流畅播放。通常为应对丢包、乱序和时延抖动,网络RTT和时延抖动越大,需要的jitterbuffer也越大,这时由于缓存的增大,视频时延也会相应增大。这就是三大指标之间矛盾的根本由来。
除了接收模块外,我们再看看其他模块的情况。随着芯片计算能力日益提升,编码、解码、渲染等模块的时延已经很小,基本都在10ms以内,甚至可以做到5ms左右,可优化空间不大,对三大核心指标影响较小。采集和传输模块的时延,主要受外部客观条件影响,前者取决于相机,后者取决于网络。发送模块会对数据传输的丢包、时延和抖动产生影响,从影响接收效果。因此为达到三大核心指标,需要做出针对性优化地主要是发送和接收模块。通过发送模块的优化,在保证卡顿率和抗弱网能力的基础上,尽量降低接收端jitterbuffer的大小,从而降低时延。
有的放矢,设计优化方案
对于发送和接收模块的联合优化,不同项目的实现不尽一致,复杂程度和效果相差也较大。下面是一个实时音视频通信架构中较为复杂的发送和接收模块实现示意。腾讯远程操控产品中实时音视频通信也是使用了这样的构成。
推荐阅读
👇戳「阅读原文」一键订阅《云荐大咖》专栏,看云端技术起落,听大咖指点迷津!云荐官将在每周五抽取部分订阅小伙伴,送出云加视频礼盒!